//
//  HomeTableViewController.swift
//  NSinaWeibo
//
//  Created by LoliQueen on 16/2/15.
//  Copyright © 2016年 LoliQueen. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

class HomeTableViewController: BaseTableViewController {
    
    
    ///微博首页 数据数组模型
//    lazy var status = [Status]()
    //懒加载一个下载网络数据模型
    lazy var statusmodel = LoadStatusListModel()
    
    //自定义刷新控件
    let myRefresh = PullDownRefreshControll()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLongin{
            visitorLoginView?.setUpUIWithInfo("关注一些人，会这里看看有什么惊喜", circleiconName: nil)}else{
            
            prepareForTabelView()
            loadData()
            
        }

    }
    
    //在视图将要出现的时候，刷新数据
    override func viewDidAppear(animated: Bool) {
//        loadData()
    }
    
    ///手动注册cell
    func prepareForTabelView(){
        
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: "CellID")
        
        ///设置cell自适应高度
        //预估计行高
        tableView.estimatedRowHeight = 300
        //自适应高度
        tableView.rowHeight = UITableViewAutomaticDimension
        //        tableView.rowHeight = 300
        //分割线太细，设置分割线 无，自定义分割线
        tableView.separatorStyle = .None
        
//        //设置手动下拉刷新  系统下拉刷新控件
//        refreshControl = UIRefreshControl()
//        ///手动天天加 下拉出发时间
//        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        //添加到视图上
        self.tableView.addSubview(myRefresh)
        myRefresh.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        ///把小菊花设置为tabelFooterView
        tableView.tableFooterView = indicatorView
        //设置转动
//        indicatorView.startAnimating()
        
        //点击状态栏，回到顶部
       
        tableView.scrollsToTop = true
        
    }
    
    ///加载微博首页数据
    @objc private func loadData() {
        
        refreshControl?.beginRefreshing()
        statusmodel.loadHomeData(indicatorView.isAnimating()) { (isSuccess) -> () in
            //获取数据成功后，恢复成正常状态
            self.myRefresh.endRefreshing()
            
            if isSuccess{
                //加载数据成功后刷新
                self.tableView.reloadData()
                //停止转动小菊花
                self.indicatorView.stopAnimating()
            }else{
                SVProgressHUD.showErrorWithStatus("请检查网络")
            }
        }
/*
//        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
//        guard let token = AccountViewModel.shareAccountViewModel.access_token else{
//            SVProgressHUD.showErrorWithStatus("请登录")
//            return
//        }x
//        //给定since_id 会返回比since_id大的id微博
//        var parameters = ["access_token":token]
//        var since_id : Int64  = 0
//        var max_id : Int64  = 0
//        //当since_id、max_id同时存在的时候，只能处理一个
//        if indicatorView.isAnimating(){
//            max_id = status.last?.id ?? 0
//        }else{
//            since_id = status.first?.id ?? 0
//        }
//        
//        //添加到参数中
//        if since_id > 0 {
//            parameters["since_id"] = "\(since_id)"
//        }
//        if max_id > 0 {
//            parameters["max_id"] = "\(max_id)"
//        }
//        let AFN = AFHTTPSessionManager()
//        //手动显示 小菊花
//        refreshControl?.beginRefreshing()
//        AFN.GET(urlString, parameters: parameters, success: { (_, result) -> Void in
//            //停止动画
//            self.refreshControl?.endRefreshing()
//            
//            //1、result 是anyobject 类型，转化为字典类型
//            guard let dict = result as? [String: AnyObject] else {
//                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
//                return
//            }
//            //数据已转成字典类型
//            //2、判断 字典中有没有key :statuses, 如果有给微博数据模型数组赋值
//            guard let array = dict["statuses"] as? [[String : AnyObject]] else{
//                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
//                return
//            }
//            //字典中有key:statuses
//            //3、遍历数组，
//            //临时数组
//            var tempArray = [Status]()
//            for item in array{
//                //4、字典转模型
//                let model = Status(dict:item)
//                print(model)
//                //5、将模型添加到数组中，给模型属性赋值
//                tempArray.append(model)
//                
//            }
//            if since_id > 0{
//                self.status = tempArray + self.status
//            }else if max_id > 0 {
//                self.status  += tempArray
//                //获取到数据之后，停止菊花转动
//                self.indicatorView.stopAnimating()
//            }else{
//                self.status = tempArray
//                //
//            }
//            
//            
//            //6、刷新tabelView
//            self.tableView.reloadData()
//            
//            print(result)
//            }) { (_, error) -> Void in
//                SVProgressHUD.showErrorWithStatus("请检查网络")
//                
//                print(error)
//        }
        */

    
    }
    
    ///懒加载小菊花视图
    lazy var indicatorView : UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
    
    
}

//数据源方法
extension HomeTableViewController{
    //返回多少个cell
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.statusmodel.status.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //手写代码，使用这个方法，必须手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier("CellID", forIndexPath: indexPath) as! StatusCell
        cell.status = self.statusmodel.status[indexPath.row]
        
        ///当加载最后一条cell的时候开始转动菊花，加载更多数据,等加载更多数据后再停止转动
        if indexPath.row == self.statusmodel.status.count - 1 && !indicatorView.isAnimating() {
            indicatorView.startAnimating()
            loadData()
        }
        
        return cell
    }
    
}